#!/usr/bin/env python
#Boa:PyApp:main

import consultasBD
import utiles

modules ={}

def lecturaStock():
    stock1 = {}
    stock2 = {}
    stock3 = {}
    stock4 = {}
    ptc = []

    print "Leyendo stock central =>",
    sql = "SELECT * FROM stock WHERE sucursal='1'"
    resultado = consultasBD.ordenCrudaDictRemota(sql,0)
    if len(resultado)==0 or resultado==() or resultado==None: 
        print "ERROR LEYENDO STOCK CENTRAL"
        return stock1,stock2,stock3,stock4,ptc,False
    else: resultado=resultado[0]
    print "Construyendo diccionario central"
    for item in resultado:
        stock1[item["ptc"]]=str(item["stock"])
        ptc.append(item["ptc"])
        
    print "Leyendo stock parana =>",
    sql = "SELECT * FROM stock WHERE sucursal='2'"
    resultado = consultasBD.ordenCrudaDictRemota(sql,1)
    if len(resultado)==0 or resultado==() or resultado==None:
        print "ERROR LEYENDO STOCK PARANA"
        return stock1,stock2,stock3,stock4,ptc,False
    else: resultado=resultado[0]
    print "Construyendo diccionario central"
    for item in resultado:
        stock2[item["ptc"]]=str(item["stock"])
        ptc.append(item["ptc"])

    print "Leyendo stock saska =>",
    sql = "SELECT * FROM stock WHERE sucursal='3'"
    resultado = consultasBD.ordenCrudaDictRemota(sql,2)
    if len(resultado)==0 or resultado==() or resultado==None:
        print "ERROR LEYENDO STOCK SASKA"
        return stock1,stock2,stock3,stock4,ptc,False
    else: resultado=resultado[0]
    print "Construyendo diccionario central"
    for item in resultado:
        stock3[item["ptc"]]=str(item["stock"])
        ptc.append(item["ptc"])

    print "Leyendo stock peatonal =>",
    sql = "SELECT * FROM stock WHERE sucursal='4'"
    resultado = consultasBD.ordenCrudaDictRemota(sql,3)
    if len(resultado)==0 or resultado==() or resultado==None:
        print "ERROR LEYENDO STOCK PEATONAL"
        return stock1,stock2,stock3,stock4,ptc,False
    else: resultado=resultado[0]
    print "Construyendo diccionario central"
    for item in resultado:
        stock4[item["ptc"]]=str(item["stock"])
        ptc.append(item["ptc"])
    
    print "Eliminando PTC repetidos"
    aux = set(ptc)
    ptc = aux

    return stock1,stock2,stock3,stock4,ptc,True

def crearArchivosSQL(miStock):
    f = open("c:\\matrisamor.doc\\stock.sql","w")

    print "Encabezamiento tabla stock.sql"
    cadena = "DROP TABLE IF EXISTS `stock`; \n"
    f.write(cadena)
    cadena = "CREATE TABLE IF NOT EXISTS `stock` ( \n"
    f.write(cadena)
    cadena = "`id` int(11) NOT NULL auto_increment, \n"
    f.write(cadena)
    cadena = "`ptc` varchar(10) NOT NULL, \n"
    f.write(cadena)
    cadena = "`sucursal` varchar(2) NOT NULL, \n"
    f.write(cadena)
    cadena = "`stock` int(4) NOT NULL, \n"
    f.write(cadena)
    cadena = "PRIMARY KEY  (`id`), \n"
    f.write(cadena)
    cadena = "UNIQUE KEY `ptc` (`ptc`,`sucursal`) \n"
    f.write(cadena)
    cadena = ") ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; \n\n"
    f.write(cadena)

    print "Procesando registros de stock.sql"
    registros = 0
    for registro in miStock:
        ptc = str(registro[0])
        sucursal = str(registro[1])
        cantidad = str(registro[2])
        cadena = "INSERT INTO stock(ptc,sucursal,stock) "
        f.write(cadena)
        cadena = "VALUES ('"+ptc+"','"+sucursal+"','"+cantidad+"'); \n"
        f.write(cadena)
        registros+= 1

    f.close()
    
    return registros

def unificacion(stock1,stock2,stock3,stock4,listaPTC):
    miStock = []
    print "Procesando stock de todas las sucursales"
    for ptc in listaPTC:
        #sucursal1
        try:
            cantidad1 = stock1[ptc]
        except:
            cantidad1 = "0"
        #sucursal2
        try:
            cantidad2 = stock2[ptc]
        except:
            cantidad2 = "0"
        #sucursal3
        try:
            cantidad3 = stock3[ptc]
        except:
            cantidad3 = "0"
        #sucursal4
        try:
            cantidad4 = stock4[ptc]
        except:
            cantidad4 = "0"

        miStock.append((ptc,1,cantidad1))
        miStock.append((ptc,2,cantidad2))
        miStock.append((ptc,3,cantidad3))
        miStock.append((ptc,4,cantidad4))
    
    return miStock

def main():
    stock1,stock2,stock3,stock4,ptc,conexion = lecturaStock()
    if not conexion:
        print "Hubo un error en la lectura de las tablas Stock"
        return
    miStock = unificacion(stock1,stock2,stock3,stock4,ptc)
    registros = crearArchivosSQL(miStock)
    
    print len(stock1),len(stock2),len(stock3),len(stock4),len(ptc)
    print len(miStock),registros
    
if __name__ == '__main__':
    main()
